type AllCombinations<S extends string, P extends string = ''> = S extends `${infer C}${infer R}`
    ? C extends ''
        ? P
        : AllCombinations<R, P> | AllCombinations<R, `${P}${C}`> | AllCombinations<R, `${C}${P}`>
    : P


// 没做完！！